#include "color.h"								//1、声明颜色的函数头文件
#include "bmp.h"								//2、声明bmp显示的函数头文件
#include "ts.h"									//3、声明触摸屏的函数头文件
#include "jpeg.h"								//4、声明jpeg显示的函数头文件
#include "camera.h"								//5、声明摄像头画面显示的函数头文件
#include "font.h"								//6、声明字体显示的函数头文件
#include "rfid.h"								//7、声明获取ic卡信息的函数头文件
#include "beep.h"								//8、声明蜂鸣器的函数头文件

//=====================一、函数功能变量(全局)区域=======================//
int camera_photo_flag  = 0;						//1、摄像头拍照标志位(六)

int main(int argc, char const *argv[])
{

	//====================一、函数功能变量(局部)区域====================//

	int 	color_move 		= 	0	;			//1、进度条移动标志(一)
	int 	page_flag 		= 	0	;			//2、只显示一次界面标志(全)
	int 	ts_x 			= 	0	;			//1、触摸屏的x轴坐标值变量(全)
	int 	ts_y 			= 	0	;			//2、触摸屏的y轴坐标值变量(全)
	int 	ts_touch 		= 	0	;			//3、触摸屏的触摸值变量(全)
	char 	buf_gif[128]    =  {0}	;			//4、gif动图的字符串数组(二)
	int     gif_count 		= 	0	;			//5、gif动图计数值(二)
	int     button_flag		=	0	;			//1、按钮标志位(三)
	pthread_t camera_show_id        ;			//1、摄像头的线程标识符(六)
	int     func_flag 		=	0	;			//2、只执行一次功能标志位(全)
	int     id_flag			=	0	;			//1、字库标志位(九)
	int		rfid_flag		=	0   ;			//2、ID卡标志位(九)
	int     lcd_flag		=	0	;			//3、显示屏标志位(九)
	int		ts_flag			=	0   ;			//4、触摸屏标志位(九)
	int		jpeg_flag		=	0   ;			//5、触摸屏标志位(九)
	pthread_t Font_Lcd_Show_Id 		;			//6、字库的线程标识符(九)
	pthread_t Rfid_Id  				;			//7、ID卡的线程标识符(九)
	pthread_t Lcd_Id 				;			//8、显示屏线程标识符(九)
	pthread_t Ts_Id  				;			//9、触摸屏的线程标识符(九)
	pthread_t Jpeg_Id 				;

	//======================二、函数功能初始化区域=====================//

	Color_Lcd_Open();							//1、打开lcd显示屏(color)
	Bmp_Lcd_Open();								//2、打开lcd显示屏(bmp)
	Ts_Open();									//3、打开触摸屏
	Jpeg_Lcd_Open();							//4、打开触摸屏(jpeg)
	Camera_Open("/dev/video7");					//5、打开摄像头
	Font_Lcd_Open();							//6、打开lcd显示屏(字库)
	BEEP_Open();								//7、打开蜂鸣器



	//=======================三、函数功能具现化区域====================//
	while(1)
	{

		//九、项目（简单）
			if (func_flag == 0)
			{
				pthread_create(&camera_show_id, NULL, Camera_Show_Pt, NULL);
				pthread_create(&Font_Lcd_Show_Id, NULL, Font_Lcd_Show_Pt, NULL);
				pthread_create(&Rfid_Id, NULL, Rfid_Pt, NULL);
				pthread_create(&Lcd_Id, NULL, Lcd_Pt, NULL);
				pthread_create(&Ts_Id, NULL, Ts_Pt, NULL);
				func_flag = 1;
			}

	
		/*//八、获取IC卡的信息
			if (func_flag == 0)
			{
			rfid_card_id = Get_IC_Code();
			printf("rfid_card_id = %#x\n", rfid_card_id);
			if (rfid_card_id == 0x4dd677e7)
				printf("识别卡号成功！欢迎回家！\n");
			else
				printf("你给我滚！不滚报警！\n");
			func_flag = 1;
			}
		*/	
		/*//七、 显示字库
			if (func_flag == 0)
			{
				bzero(font_txt, sizeof(font_txt));
				sprintf(font_txt, "哥哥我爱你！！");
				system("madplay ./4.mp3 &");
				Font_Lcd_Show(50, 800, 80, 0, 0, font_txt, 0, 0);
				func_flag = 1;
			}
		*/
		/*//六、实现摄像头拍照
			if (func_flag == 0)
			{
				pthread_create(&camera_show_id, NULL, Camera_Show_Pt, NULL);
				func_flag = 1;
			}
			
			if (page_flag == 0)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				Bmp_Show(652, 176, 128, 128, "./button/button0.bmp");
				page_flag = 1;
			}

			Ts_Get_xy(&ts_x, &ts_y, &ts_touch);
			if (ts_x>652 && ts_x<780 && ts_y>176 && ts_y<304)
			{
				if(ts_touch == 1)
				{
					Bmp_Show(652, 176, 128, 128, "./button/button1.bmp");
				}
				else
				{
					Bmp_Show(652, 176, 128, 128, "./button/button0.bmp");
					camera_photo_flag = 1;
				}
			}
		*/
		/*//五、jpg图片相册查找功能
			if (page_flag == 0)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				Bmp_Show(652, 176, 128, 128, "./button/button0.bmp");
				page_flag = 1;
			}

			Ts_Get_xy(&ts_x, &ts_y, &ts_touch);
			if (ts_x>652 && ts_x<780 && ts_y>176 && ts_y<304)
			{
				if(ts_touch == 1)
				{
					Bmp_Show(652, 176, 128, 128, "./button/button1.bmp");
				}
				else
				{
					Bmp_Show(652, 176, 128, 128, "./button/button0.bmp");
					bzero(jpg_photo, sizeof(jpg_photo));
					sprintf(jpg_photo, "./photo/%d.jpg", jpg_photo_num);
					Jpeg_Lcd_Show(0, 0, jpg_photo);	
					jpg_photo_num++;
					if (jpg_photo_num>10)
						jpg_photo_num = 0;
				
				}
			}
		*/
		/*//四、按键效果功能2(操作功能)
			if (page_flag == 0)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				Bmp_Show(100, 180, 128, 128, "./button/button0.bmp");
				page_flag = 1;
			}
			Ts_Get_xy(&ts_x, &ts_y, &ts_touch);
			if (ts_x>100 && ts_x<228 && ts_y>180 && ts_y<308)
			{
				if(ts_touch == 1)
					Bmp_Show(100, 180, 128, 128, "./button/button1.bmp");
				else
					Bmp_Show(100, 180, 128, 128, "./button/button0.bmp");
			}
		*/
		/*//三、按键效果功能1(开关功能)
			if (page_flag == 0)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				Bmp_Show(100, 180, 128, 128, "./button/button0.bmp");
				page_flag = 1;
			}

			Ts_Get_xy(&ts_x, &ts_y, &ts_touch);
			if (ts_x>100 && ts_x<228 && ts_y>180 && ts_y<308 && ts_touch==1)
			{
				button_flag = !button_flag;	//取反
				if(button_flag == 1)
					Bmp_Show(100, 180, 128, 128, "./button/button1.bmp");
				else
					Bmp_Show(100, 180, 128, 128, "./button/button0.bmp");
			}
		*/
		/*//二、点击左边屏幕显示上一张，点击右边显示下一张图片(僵尸动图显示)
			if (page_flag == 0)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				page_flag = 1;
			}

			Ts_Get_xy(&ts_x, &ts_y);
			if (ts_x>400)
			{
				sprintf(buf_gif, "./bmp/Frame%d.bmp", gif_count);
				Bmp_Show(0, 0, 800, 480, buf_gif);
				gif_count++;
				if (gif_count > 81)
					gif_count = 0;
				
			}
			else
			{
				sprintf(buf_gif, "./bmp/Frame%d.bmp", gif_count);
				Bmp_Show(0, 0, 800, 480, buf_gif);
				gif_count--;
				if (gif_count < 0)
					gif_count = 81;
			}
		*/
		/*//一、颜色进度条功能实现
			if (page_flag == 0)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				page_flag = 1;
			}

			Color_Show(0, 100, color_move, 80, 0x0000ff00);	
			color_move++;
			usleep(10000);			//0.1秒
			if (color_move>800)
			{
				Color_Show(0, 0, 800, 480, 0x00ffffff);		
				color_move = 0;
				sleep(1);
			}
		*/	
	}
	
	//======================四、函数功能资源释放区域====================//

	Color_Lcd_Close();							//1、关闭lcd显示屏(color)
	Bmp_Lcd_Close();							//2、关闭lcd显示屏(bmp)
	Ts_Close();									//3、关闭触摸屏
	Jpeg_Lcd_Close();							//4、关闭触摸屏(jpeg)
	Camera_Close();								//5、关闭摄像头
	pthread_join(camera_show_id, NULL);			//6、回收线程函数资源
	Font_Lcd_Close();							//7、关闭lcd显示屏字库
	pthread_join(Font_Lcd_Show_Id, NULL);		//8、回收字库线程函数资源
	pthread_join(Rfid_Id, NULL);				//9、回收ID卡线程函数资源
	pthread_join(Lcd_Id, NULL);					//10、回收显示屏线程函数资源
	pthread_join(Ts_Id, NULL);					//11、回收触摸屏卡线程函数资源
	BEEP_Close();

	return 0;

}


